package com.aizuda.boot.modules.business.counterparty.entity.dto;


import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 银行信息DTO（用于交易方创建）
 */
@Data
@Schema(description = "银行信息")
public class BankInfoDTO {

    @Schema(description = "主键ID")
    private Integer id;

    @Schema(description = "银行编号")
    private String bankCode;

    @Schema(description = "银行国家，请求时传入国家代码，响应时返回国家名称")
    private String bankCountry;

    @Schema(description = "银行国家代码")
    private String bankCountryCode;
    
    @Schema(description = "银行国家名称")
    private String bankCountryName;

    @Schema(description = "银行名称", required = true)
    @NotBlank(message = "银行名称不能为空")
    private String bankName;

    @Schema(description = "账户名", required = true)
    @NotBlank(message = "账户名不能为空")
    private String accountName;

    @Schema(description = "账号", required = true)
    @NotBlank(message = "账号不能为空")
    private String accountNumber;
    
    @Schema(description = "银行账号，兼容字段，值同accountNumber")
    private String bankAccount;

    @Schema(description = "银行内部ID")
    private String bankInternalId;

    @Schema(description = "币种")
    private String currency;

    @Schema(description = "总账科目")
    private String generalLedgerAccount;

    @Schema(description = "清算科目")
    private String clearingAccount;

    @Schema(description = "账户属性描述")
    private String accountAttributeDesc;
    
    @Schema(description = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;
    
    @Schema(description = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updatedAt;
} 